package chai.ning.overload;

/**
 * 1、同一个类中存在多个【同名】、【不同参】的方法时，这些方法之间构成重载
 * 2、当前类定义的 divide方法与从父类中继承的divide方法是同名不同参，它们之间构成重载
 */
public class Monkey extends Animal {
	
	// 与从父类继承来的divide方法构成重载(overload)
	protected double divide( double a , double b ) {
		System.out.println( "int divisive( double , double )" );
		return a / b ; 
	}
	
	protected int add( int a , int b ) {
		System.out.println( "int add( int , int )" );
		return a + b ;
	}
	
	int add( int a , int b , int c ) {
		System.out.println( "int add( int , int , int )" );
		return a + b + c ;
	}
	
	public double add( double a , int b ) {
		System.out.println( "int add( double , int )" );
		return a + b ; // int类型首先自动类型提升为 double类型后再参与加法运算
	}
	
	public double add( int a , double b ) {
		System.out.println( "int add( int , double )" );
		return a + b ;
	}
	
	public static void main(String[] args) {
		Monkey m = new Monkey();
		
		m.add( 1 , 2 , 3 );
		m.add( 1.0 , 2 );
		
		System.out.println( "- - - - - -" );
		
		m.divide( 5 ,  2 );
		m.divide( 5.0 , 2.0 );
		
	}

}
